1. Field of the Invention
The invention relates generally to application programming interfaces, or APIs, for providing network management capability and, more particularly, to implementing a management module intelligent API that permits network management software to work in various operating environments.
2. Description of the Related Art
In addition to performing its intended purpose, software development today defines the environment under which software runs. In the 1980s, xe2x80x9ccompatibilityxe2x80x9d was a key concern for software developers. A computer whose hardware could not successfully run any software that ran on an IBM PC AT was not xe2x80x9cAT-compatible.xe2x80x9d Thus, the aggregation of AT-compatible systems in the marketplace, for example, readily defined a platform around which a software developer could write an application program.
Today, software applications are so tightly coupled to operating system software that xe2x80x9ccompatibilityxe2x80x9d has been supplanted with the watchwords xe2x80x9coperating environment.xe2x80x9d Now, the target platform for the application programmer is not just the hardware (the CPU and system board), but may include the operating system, network, and possibly browser software as well. Even other application programs may affect the operating environment and thus demand consideration by a software developer.
Further, obsolescence quickly diminishes the life of an application program that cannot readily be adapted to new hardware that arrives on the market. With the capability to download software upgrades off a company""s web site, application developers can no longer hide behind the bureaucracy of the shipping department in failing to quickly support new hardware.
Partly as an acknowledgement that the operating environment of a consumer cannot be defined entirely, and due to the complexity of application programs generally, many software programs today are structured so that they succeed in a variety of operating environments as well as anticipate new hardware that may emerge. An application programming interface, or API, is a popular tool for such structuring of software applications. As the name suggests, it xe2x80x9cinterfacesxe2x80x9d the core application code with the rest of the operating environment. APIs generally include specifications or protocols for their use; programs written according to the protocol may have a similar interface to the end user, for example. APIs also may include routines, libraries, or other tools which minimize duplicity of effort for various developers who need to perform similar functions. Thus, APIs are tools that typically permit new development to support new operating systems, to support new hardware, or to add new software features to existing application programs. Operating systems such as Microsoft Windows provide an API to enable programmers to write applications that are consistent with the operating environment and which provide a consistent user interface.
One type of application program, network management software, is particularly suited to such interfaces. For one thing, the network management software must support a huge variety of networkable devices. Ideally, a network management application supports virtually every hardware device that may be managed on a network. Accordingly, network management software may include a variety of application programming interfaces.
Briefly, the illustrative system provides an intelligent application programming interface, or API, between management modules and the operating environments that may be supported by a network management program. The API provides an interface so that each management module, which supports a distinct network manageable device, does not have to determine the environment from which an SNMP request originates. Instead, the management module can focus upon sending and responding to SNMP commands in a standard manner. Further, the intelligent management module API provides tools which simplify the work involved in building a user interface, including buttons and graphical representations of managed devices. Using these tools, a consistent look and feel is provided to the user irrespective of the device being managed by the management module.
The management module API includes a number of utility objects. One, an intelligent SNMP interface, translates requests from a number of environments into a standard format which is comprehensible to each management module. Using this mechanism, each management module can expect all SNMP requests to follow a particular format, regardless of the environment from which the request originated. Further, the management module request is issued to the SNMP interface, again, regardless of the destination environment. Instead, the SNMP interface determines the current operating environment, translates the SNMP request into an environment-ready format, and sends the request to the network management software.
This modularization of the SNMP support eliminates the need to rewrite existing code for each management module. A management module can be written once to support many potential operating environments. The intelligent SNMP interface thus simplifies the job of management module development.
A second utility object, an intelligent button object, provides a mechanism for management module developers to readily define buttons for the user interface, also independent of the operating environment. The mechanism further includes the ability to xe2x80x9chide,xe2x80x9d or not display, a button when it is not supported in a certain operating environment. Closely related to the intelligent button object, an intelligent multi-target help button enables management module developers to provide help features pertinent to a device, again regardless of the operating environment.
Additionally, the intelligent management module API provides an intelligent image loading utility object. This feature permits the management module developer to load a graphic image to the user interface simply by specifying the name of the file holding the image. Because the location of a graphical image may differ, depending upon the operating environment, the intelligent image loader performs the operations necessary to determining where the image is located, removing this overhead from management module development.
Related to the intelligent image loader, another utility object, a dynamic graphic image layering object, provides a framework for providing graphical images to the user interface. This utility object simplifies the process of generating graphic images of a device for the management module developer, readily permits updates to be made to the image as desired, and enables the graphic to be updated dynamically, based upon SNMP responses.
The intelligent management module API also provides an SNMP indexing class to simplify the development of reusable dialogs in the user interface. The SNMP indexing class receives SNMP MIB data as input and is used to present a dialog containing either a single or multiple rows of MIB data, depending upon the user request. The SNMP indexing class keeps the management module developer from having to write duplicative code for the different types of outputs, thus allowing for a consistent look and feel for the display of information for managed devices generally.
Finally, the intelligent management module API includes an SNMP evaluator object. This feature simplifies the creation and update of the part of the graphical display which is based upon SNMP-gathered information. The management module developer specifies the portion of the display which is based on MIB information for the device and supplies either Boolean or bit mask operations to be performed. The SNMP evaluator object retrieves the information from the agent of the device, performs either Boolean or bit mask calculations on the retrieved information, as specified, and loads and displays the updated graphic image based upon the results of the evaluations. The SNMP evaluator object thus provides dynamic graphical updates of SNMP MIB data.
Other applications for the intelligent management module API are possible. The intelligent management module API addresses the support of multiple operating environments by network management software, it provides features which reduce the complexity of management module development generally, and it gives the user interface for the network management software a consistent look and feel.